home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / amok_lha / amok83.lha / TKEd / Rexx / Help.tked < prev    next >
Text File  |  1993-08-15  |  5KB  |  162 lines

  1. /** ---------------------------------------------------------------
  2.  ** Arexx Programm um das Wort unter dem Cursor
  3.  ** in einer Hilfs-Datei zu suchen, und den
  4.  ** entsprechenden Hilfstext auszugeben.
  5.  ** ---------------------------------------------------------------
  6.  ** AREXX-Programm to find the word under the cursor in a help-file
  7.  ** and to display the help-text
  8.  ** ---------------------------------------------------------------
  9.  **
  10.  ** Installation  : In TKEd-AREXX-Menus mit
  11.  **                 Help.tked TKEd:Help/ARexx-hlp
  12.  **
  13.  **                 Das Programm 'Help.tked' muß sich im 'REXX:' Ordner
  14.  **                 befinden!
  15.  ** 
  16.  ** Programm von : Christoph Kirsch, 1992
  17.  ** 
  18.  **  Hilfs-Datei : In der Variable HDatei definiert.
  19.  ** Trennzeichen : Jeder Hilfstext wird durch die in der Variable
  20.  **                TZeichen definierte Zeichenfolge abgeschlossen.
  21.  **
  22.  ** Ergänzung von: Tom Kroener
  23.  **                Cursor braucht nicht mehr auf dem ersten Buchstaben
  24.  **                des Wortes zu stehen, sondern kann beliebig im Wort
  25.  **                positioniert sein; außerdem wurden ein paar potentielle
  26.  **                Fehlerquellen (keine Leerzeichen, sondern ~+-* usw. 
  27.  **                zwischen den Worten) beseitigt
  28.  **/
  29.  
  30. options results
  31. address 'TKEd.1'
  32.  
  33. HDatei = arg(1)                     /* Hilfsdatei wird übergeben */
  34.  
  35. MakeTitle "Ich suche..."
  36.  
  37. TZeichen = "***"                    /* Trennzeichen */
  38. OderCode = "*"
  39. Ende = 0
  40.  
  41. DO WHILE Ende = 0
  42.   GetColumnNr
  43.   IF result = 1 THEN Ende = 1
  44.   Cursor "LEFT"
  45.   GetChar
  46.   IF (result=" ") | (result='(') | (result=')') | (result='=') | (result='/') | (result='*') | (result='-') | (result='+') | (result='|') | (result='~') | (result='#') | (result=';') | (result='"') | (result="'")
  47.     THEN DO
  48.       Ende = 1
  49.       NextWord
  50.   END;
  51. END;
  52.  
  53. GetChar
  54. Zeichen = result
  55.  
  56. GetChar                             /* Zeichen unter Cursor */
  57. Zeichen = result
  58. Ende = 0
  59. Wort = Zeichen                      /* Wort unter Cursor */
  60. GetLineLen                          /* Zeilenlänge feststellen */
  61. MaxSpalte = result+1
  62.  
  63. DO WHILE Ende = 0                   /* Nächstes Leerzeichen */
  64.   Cursor "RIGHT"                    /* oder Zeilenende suchen */
  65.   GetChar                           /* und solange Buchstaben */
  66.   Zeichen = result                  /* anhängen */
  67.   GetColumnNr
  68.   Spalte = result
  69.   IF Spalte = MaxSpalte THEN Ende = 1
  70.   IF (Zeichen=" ") | (Zeichen='(') | (Zeichen=')') | (Zeichen='=') | (Zeichen='/') | (Zeichen='*') | (Zeichen='-') | (Zeichen='+') | (Zeichen='|') | (Zeichen='~') | (Zeichen='#') | (Zeichen=';') | (Zeichen="'") | (Zeichen='"') THEN Ende = 1
  71.   IF Ende = 0 THEN Wort = Wort || Zeichen
  72. END;
  73. Wort = upper(Wort)
  74. IF ~open('datei',HDatei,'Read')     /* Hilfsdatei öffnen */
  75.   THEN DO
  76.     Request1 "Kann Hilfsdatei nicht öffnen!"
  77.     EXIT 5
  78.   END
  79.  
  80. DO WHILE ~EOF('datei')             /* Trennzeichen suchen */
  81.   Text = ReadLn('datei')
  82.   IF Text = TZeichen               /* Wenn gefunden, dann ist nächste */
  83.     THEN DO                        /* Zeile ein Suchbegriff */
  84.       Abb = 0
  85.       Ja = 0
  86.       DO WHILE (Abb = 0)
  87.         Text = ReadLn('datei')     /* Suchbegriff vergleichen */
  88.         IF Wort = upper(Text)
  89.           THEN DO
  90.             Ja = 1
  91.             Abb = 1
  92.           END
  93.         ELSE DO
  94.           Text = ReadLn('datei')
  95.           IF ~(Text = OderCode) THEN Abb = 1
  96.         END
  97.       END
  98.       IF Ja = 1
  99.       THEN DO                      /* wenn gleich, dann */
  100.         WBtoFront
  101.         call open('hcon','CON:0/11/640/189/Hilfe')
  102.         DO WHILE ~EOF('datei')
  103.           Text = ReadLn('datei')
  104.           DO WHILE (Text = OderCode)
  105.             Text = ReadLn('datei')
  106.             Text = ReadLn('datei')
  107.           END
  108.           IF ~(Text = TZeichen) THEN call WriteLn('hcon',Text)
  109.           ELSE BREAK
  110.         END
  111.         call WriteLn('hcon','RETURN drücken.')
  112.         call ReadLn 'hcon'
  113.         call Close('hcon')
  114.         call Close('datei')
  115.         TKEdToFront
  116.         EXIT 0
  117.       END
  118.     END
  119. END
  120.  
  121. call close('datei')                 /* keinen Text gefunden */
  122.  
  123. Request2 "Keinen Hilfstext gefunden! Stichworte zeigen?"
  124. index = result
  125.  
  126. if index=10 then exit 0             /* kein Index -> Ende */
  127.  
  128. IF ~open('datei',HDatei,'Read')     /* Hilfsdatei erneut öffnen */
  129.   THEN DO
  130.     Request1 "Kann Hilfsdatei nicht öffnen!"
  131.     EXIT 5
  132.   END
  133.  
  134. WBtoFront
  135. call open('hcon','CON:0/11/640/189/Mögliche Stichworte')
  136.  
  137. voll = 0                            /* Alle Stichworte anzeigen */
  138. do while ~eof('datei')
  139.   text = readln('datei')
  140.   if (text = TZeichen) | (text = OderCode)
  141.   then do
  142.     text = readln('datei')
  143.     call writeln('hcon',text)
  144.     voll = voll + 1
  145.     if voll = 19
  146.     then do
  147.       call writeln('hcon','')
  148.       call writeln('hcon','RETURN drücken für mehr.')
  149.       call readln 'hcon'
  150.       voll = 0
  151.     end
  152.   end
  153. end
  154. call writeln('hcon','ENDE - Taste drücken.')
  155. call readln 'hcon'
  156.  
  157. TKEdtoFront
  158. call close('datei')
  159.  
  160. EXIT 0
  161.  
  162.